home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 050 / madtrb7.arc / GETDIR.PAS < prev    next >
Pascal/Delphi Source File  |  1984-11-21  |  2KB  |  72 lines

  1. {getdir5 -- get disk directory sectors
  2.  (C) Copyright 1982 by Walter H. Rauser
  3.     getdir5.pas -- version using pascal convention for buffer.
  4.             under development  <whr  5-16-82>
  5.             just recovered from FAT crash caused by Linker!!!
  6.             exchanged disks as directed because file not on disk
  7.       
  8. }
  9. PROGRAM TESTGETDIR(input,output);
  10. type    drivetype = (A,B);
  11.         dirtype = array[1..112] of record    {DOS 1.10 Double Sided Drives}
  12.                     name   [0]:string(8);
  13.                     ext    [8]:string(3);
  14.                     attr  [11]:byte;
  15.                     resvd [12]:array[1..10] of byte;
  16.                     time  [22]:array[1..2] of byte;
  17.                     date  [24]:array[1..2] of byte;
  18.                  cluster1 [26]:array[1..2] of byte;
  19.                     sizel [28]:array[1..2] of byte;
  20.                     sizeh [30]:array[1..2] of byte;
  21.                   end;
  22.  
  23. var        dir1 :dirtype;
  24.         drive :drivetype;
  25.  
  26. {EXTERN declarations}
  27.         function GETSEC( drive,first,numof :integer;
  28.                          var buffer :dirtype;  var errorc :integer
  29.                         ):boolean; EXTERN ;
  30.  
  31. {GETDIR - function to get directory sectors from disk.}
  32.         function GETDIR( drive :drivetype;
  33.                          var dir :dirtype ):boolean;
  34.  
  35.         var  dr, errorc :integer;
  36.  
  37.         begin {getdir}
  38.             dr := ord(drive);
  39.             {add code to get FAT and test for double sided drives}
  40.             {only get first four file sectors to show how it's done}
  41.             if getsec( dr, 3, 4, dir, errorc ) then getdir := true
  42.             else begin
  43.                 getdir := false;
  44.                 writeln('Get Directory Sector Failed');
  45.                 writeln('ERROR CODE = ', errorc:6:16 );
  46.             end;
  47.         end; {getdir}
  48.  
  49. {-------------------------------------------------------------------}
  50.  
  51. var    i,j :integer;
  52. begin {testgetdir}
  53.     for i:= 1 to 112 do dir1[i].name := '        ';
  54.     drive := B;
  55.     if getdir( drive, dir1 ) then begin
  56.         for i := 1 to 64 do
  57.                 with  dir1[i] do
  58.                 [
  59.                 write(i:5,'  ', name,'.',ext,'  ',attr:2:16,'  ');
  60.                 for j:=1 to 10 do write(resvd[j]:2:16);     write('  ');
  61.                 for j:= 1 to 2 do write(time[j]:2:16);      write('  ');
  62.                 for j:= 1 to 2 do write(date[j]:2:16);      write('  ');
  63.                 for j:= 1 to 2 do write(cluster1[j]:2:16);  write('  ');
  64.                 for j:= 1 to 2 do write(sizel[j]:2:16);     write('  ');
  65.                 for j:= 1 to 2 do write(sizeh[j]:2:16);     write('  ');
  66.                 writeln;
  67.                 ]
  68.     end
  69.     else abort('Aborting in TESTGETDIR',1,1);
  70. end. {testgetdir}
  71.  
  72.